package com.get;


import com.base.Base;
import com.base.Local;
import com.base.ScreenSize;
import com.messge.Message;
import com.method.DmMethod;
import org.apache.commons.lang3.time.DateUtils;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.util.ResourceUtils;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import static com.base.Base.*;
import static com.base.Base.sleeps;

/**
 * 识别桌面上的戒指图片，如果有，则购买。只识别左半边。
 */
public class Ring {


    public static List<String> str=new ArrayList<>();

    public static  Long numKey=0L;

    /**
     * 主程序
     */
   public void  run(){
        sleeps(1);
        ScreenSize screenSize=new ScreenSize();
        setWorkArea(screenSize.getScreenWidth(), screenSize.getScreenHeight());

        //循环购买
        int i=0;
        double m=1.0;
        Date d =null;
       SimpleDateFormat sbf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
       while (i == 0){
            getRing();
            sleeps(m);
            m=m+0.1;
            if(m>=2){
                m=1.0;
            }

            d = new Date();
            System.out.println("寻找中,当前时间:"+ sbf.format(d)+",总共寻找到"+numKey+"个物品。");

        }
    }


    /**
     * 购买戒指
     *
     */
    public static void getRing() {
        int fixX = 15;
        int fixY = 15;

        //戒指的素材有多次，依次寻找素材
        //批量寻找特定素材文件夹里面的素材，如果有则购买。
        //获取素材文件夹路径
        //如果为0，则获取路径名称。
        if(str.size()==0){
            System.out.println(PATH);
            try {
                str=getFiles(PATH  );
            }catch (Exception e){
                e.printStackTrace();
            }

        }

        if(str==null||str.size()==0){
            System.out.println("没有寻找到素材");
            return;
        }


            //每次传递所有的图片进入
            Local local = findPicList(str);
            sleeps(0.5);
            //停止一秒
            if (local != null) {
                sleeps(1);
                System.out.println("已寻找到坐标:X" + local.getX() + ",Y:" + local.getY());
                String moveTo= moveTo(local.getX() + fixX, local.getY() + fixY);
                sleeps(1);
                //右键点击
                rightClick();
                sleeps(3);
                moveTo(700,450);
                numKey++;



            }



    }







    /**
     * @Author：
     * @Description：获取某个目录下所有直接下级文件，不包括目录下的子目录的下的文件，所以不用递归获取
     * @Date：
     */
    public static List<String> getFiles(String path) throws IOException {
        List<String> files = new ArrayList<String>();

        // TODO 加载当前项目classpath下META-INF/folder及其子文件夹中的所有文件
        Resource[] resources = new PathMatchingResourcePatternResolver().getResources(ResourceUtils.CLASSPATH_URL_PREFIX + "screen/*.png");

        for (int i = 0; i < resources.length; i++) {
            resources[i].getFilename();
            files.add(resources[i].getFilename());
        }
        return files;
    }

}
